package controller

import (
	"bluebell/logic"
	"bluebell/models"
	"strconv"

	"go.uber.org/zap"

	"github.com/gin-gonic/gin"
)

// DeletePost 删除帖子功能
// @Summary 删除帖子功能
// @Description 删除帖子在数据库中数据
// @Tags 帖子相关接口(api分组展示使用的)
// @Accept application/json
// @Produce application/json
// @Param Authorization header string true "Bearer JWT"
// @Param CommentID query int true "帖子ID"
// @Security ApiKeyAuth
// @Success 200 {object} models.ResponseSuccess "成功响应"
// @Success 400 {object} models.ResponseError "响应错误"
// @Success 500 {object} models.ResponseError "服务器错误"
// @Router /deleteV1 [delete]
func DeletePost(c *gin.Context) {
	// 获取参数与参数校验
	poststr := c.Query("CommentID")
	postID, err := strconv.ParseInt(poststr, 10, 64)
	if err != nil {
		ResponseError(c, models.CodeInvalidParam)
		zap.L().Error("delete post invalid param", zap.Error(err))
		return
	}
	// 传入参数到logic层
	logic.DeletePost(postID)
	// 响应参数
	ResponseSuccess(c, models.CodeSuccess)

}

// DeleteUser 删除用户功能
// @Summary 删除用户功能
// @Description 删除用户在数据库中数据
// @Tags 用户相关接口 (api分组展示使用的)
// @Accept application/json
// @Produce application/json
// @Param Authorization header string true "Bearer JWT"
// @Param user_id query int true "用户ID"
// @Security ApiKeyAuth
// @Success 200 {object} models.ResponseSuccess "成功响应"
// @Success 400 {object} models.ResponseError "响应错误"
// @Success 500 {object} models.ResponseError "服务器错误"
// @Router /deleteUser [delete]
func DeleteUser(c *gin.Context) {
	//获取用户名
	userid := c.Query("user_id")
	userID, err := strconv.ParseInt(userid, 10, 64)
	if err != nil {
		ResponseError(c, models.CodeInvalidParam)
		zap.L().Error("delete user invalid param", zap.Error(err))
		return
	}
	//传入参数到logic
	logic.DeleteUser(userID)
	//返回相应
	ResponseSuccess(c, models.CodeSuccess)
}

// DeletePostsByUserIDAndPostIDHandler 删除指定用户和帖子的处理函数
// @Summary 删除用户发布的帖子
// @Description 根据用户ID和帖子ID删除帖子
// @Tags 帖子相关接口
// @Accept application/json
// @Produce application/json
// @Param Authorization header string true "Bearer JWT"
// @Param post_id query string true "帖子ID"
// @Security ApiKeyAuth
// @Success 200 {object} models.ResponseSuccess
// @Success 400 {object} models.ResponseError "参数错误"
// @Success 401 {object} models.ResponseError "未登录"
// @Success 500 {object} models.ResponseError "服务器错误"
// @Router /post/delete [delete]
func DeletePostsByUserIDAndPostIDHandler(c *gin.Context) {
	// 1. 获取参数
	// 获取当前用户ID
	userID, err := getCurrentUserID(c)
	if err != nil {
		zap.L().Error("getCurrentUserID failed", zap.Error(err))
		ResponseError(c, models.CodeNeedLogin)
		return
	}

	// 获取帖子ID from JSON body
	var req struct {
		PostID string `json:"post_id"`
	}
	if err := c.ShouldBindJSON(&req); err != nil {
		zap.L().Error("invalid JSON body", zap.Error(err))
		ResponseError(c, models.CodeInvalidParam)
		return
	}

	// Convert post_id to int64
	postID, err := strconv.ParseInt(req.PostID, 10, 64)
	if err != nil || postID <= 0 {
		zap.L().Error("invalid post_id", zap.Error(err))
		ResponseError(c, models.CodeInvalidParam)
		return
	}

	// 2. 调用逻辑层
	if err := logic.DeleteUserPublicPost(userID, postID); err != nil {
		zap.L().Error("logic.DeleteUserPublicPost failed", zap.Error(err))
		ResponseError(c, models.CodeServerBusy)
		return
	}

	// 3. 返回响应
	ResponseSuccess(c, models.CodeSuccess)
}
func DeleteAvatar(c *gin.Context) {

}
